let ad_sdk_global = null
let global_data = {
  bqtAdIdArr: [], // 百青藤广告位
  nativeAdvIdsConfig: [],
  requestNum: 0,
}
const initBqtSdk = () => {
  ad_sdk_global = AD_SDK.ad_sdk_global
  // 百青藤广告位
  if (ad_sdk_global.adNewPostionConfig.baidu_ad) {
    ad_sdk_global.adNewPostionConfig.baidu_ad.baidu_ad_config.map((o, ii) => {
      let sArr = o.ad_ids.split(',')
      global_data.bqtAdIdArr = global_data.bqtAdIdArr.concat(
        sArr.map((so) => {
          return {
            id: so,
            inUse: false,
            grade: o.temp_id,
            appid: ad_sdk_global.adNewPostionConfig.baidu_ad.product_id,
          }
        })
      )
    })
  }
}
const setCommonParams = (obj = {}) => {
  return {
    ad_network: 5,
    ad_type: '信息流',
    ad_style: '',
    scenario: '百青藤',
    popName: obj.scenario == '厂商广告联盟' ? '底通广告' : '广告池',
    popGroupName: obj.scenario == '厂商广告联盟' ? '底通广告' : '广告池',
    type: 'bqt_ad',
    scene: '自动请求',
    adTurn: obj.scenario == '厂商广告联盟' ? obj.requestNum : global_data.requestNum,
    requestNum: obj.scenario == '厂商广告联盟' ? obj.requestNum : global_data.requestNum,
    brand: ad_sdk_global.deviceInfo.brand,
    result: '发起请求'
  }
}
/**
* 获取百度广告
* @param {Object} obj
* @param {Function} callBack
*/
function getBqtAd(obj, callBack) {
  global_data.requestNum++
  let param = setCommonParams(obj)
  let bqtAdIds = global_data.bqtAdIdArr.filter(
    (res) => !res.inUse && res.grade == obj.bqtTempId
  )
  let bqtCanUseIds = getArrayItems(bqtAdIds, 1)
  LOG('AD', `广告ADSDK========>获取百度广告`, bqtCanUseIds, param)
  if (bqtCanUseIds.length > 0) {
    let bqtObj = {
      bqt_reload_count: 0,
      is_auto_play_feed_video_ads: 0,
      is_mute_feed_video_ads: 0,
      is_request_feed_video_ads: 0,
      is_show_second_dialog: ad_sdk_global.isBqtCanShowDialog || 0,
      is_show_volume_icon: 0,
      bqt_template_encode: obj.bqtTempId,
      id: bqtCanUseIds[0].id,
      app_id: bqtCanUseIds[0].appid,
      adMethod: '2.0',
      ...param
    }
    AD_SDK.uploadAdInfo('request', bqtObj)
    LOG('AD', `广告ADSDK========>获取百度广告`, bqtObj)
    callBack && callBack(bqtObj)
  } else {
    callBack && callBack('')
  }
}
// 从数组中随机获取n个不重复的数据
function getArrayItems(arr, num) {
  //新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组
  var temp_array = new Array()
  for (var index in arr) {
    temp_array.push(arr[index])
  }
  //取出的数值项,保存在此数组
  var return_array = new Array()
  for (var i = 0; i < num; i++) {
    //判断如果数组还有可以取出的元素,以防下标越界
    if (temp_array.length > 0) {
      //在数组中产生一个随机索引
      var arrIndex = Math.floor(Math.random() * temp_array.length)
      //将此随机索引的对应的数组元素值复制出来
      return_array[i] = temp_array[arrIndex]
      //然后删掉此索引的数组元素,这时候temp_array变为新的数组
      temp_array.splice(arrIndex, 1)
    } else {
      //数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
      break
    }
  }
  return return_array
}
export { initBqtSdk, getBqtAd }
